listbase: Flip autoscroll deltas if adjustments are flipped
authorBenjamin Otte <otte@redhat.com>
Wed, 24 Jun 2020 03:52:35 +0000 (05:52 +0200)
committerBenjamin Otte <otte@redhat.com>
Fri, 26 Jun 2020 05:13:32 +0000 (07:13 +0200)
Fixes autoscroll on RTL languages.

gtk/gtklistbase.c

index 05df60b30f47cacc3004605aa4f2de6b83de2b6f..7c4af31cb788d743d88ce997adf64d1ad68622cb 100644 (file)
@@ -1275,8 +1275,14 @@ add_autoscroll (GtkListBase *self,
 {
   GtkListBasePrivate *priv = gtk_list_base_get_instance_private (self);
 
-  priv->autoscroll_delta_x = delta_x;
-  priv->autoscroll_delta_y = delta_y;
+  if (gtk_list_base_adjustment_is_flipped (self, GTK_ORIENTATION_HORIZONTAL))
+    priv->autoscroll_delta_x = -delta_x;
+  else
+    priv->autoscroll_delta_x = delta_x;
+  if (gtk_list_base_adjustment_is_flipped (self, GTK_ORIENTATION_VERTICAL))
+    priv->autoscroll_delta_y = -delta_y;
+  else
+    priv->autoscroll_delta_y = delta_y;
 
   if (priv->autoscroll_id == 0)
     priv->autoscroll_id = gtk_widget_add_tick_callback (GTK_WIDGET (self), autoscroll_cb, self, NULL);